<!DOCTYPE html>
<html>
<html lang="es">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>RUC</title>
  <link rel="stylesheet" href="stylesheets/app.css">
  <script>
    window.brunch = window.brunch || {};
    window.brunch['auto-reload'] = {enabled: true};
  </script>
  <meta name="description" content="Buscar en el RUC (Registro Único del Contribuyente)"/>
  <meta name="keywords" content="RUC, Registro Único del Contribuyente, Paraguay, SET, Hacienda"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no"/>
  <link type="image" rel="shortcut icon" href="/img/favmandioca.png?MRi9P8FuWcoJ5ouh0fkMXw"/>
  <link type="text/css" rel="stylesheet" href="http://fonts.googleapis.com/css?family=Rufina:400,700"/>
  <script src="javascripts/vendor.js"></script>
  <script src="javascripts/app.js"></script>
  <!--    <script>require('initialize');</script> -->
</head>
<body>
<div id="wrap">
  <div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </a>
        <div class="nav-collapse">
          <ul class="nav">
            <li>
              <a href="/"><i class="icon-home"></i> Buscador</a>
            <li>
            <li class="dropdown active">
              <a href="sobre" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-info-sign"></i> Información</b></a>
              <ul class="dropdown-menu">
                <li>
                  <a href="sobre"><i class="icon-info-sign"></i> Sobre</a>
                </li>
                <li>
                  <a href="stressTest"><i class="icon-signal"></i> Prueba de Estrés</a>
                </li>
                <li>
                  <a href="calcDv"><i class="icon-share"></i> Calcular DV (Algoritmos)</a>
                </li>
              </ul>
          </ul>
        </div>
        <div class="pull-right">
          <a class="brand" href="http://sun.com.py/"><img src= /img/SUNCOMLogo3D12.png?Jr4sOdJHFpSVhq2i1NNSyQ/></a>
        </div>
      </div>
    </div>
  </div>
  <div id="push">
    <div class="page">
      <div class="container">
        <div id="msg">
          <noscript><div class='alert alert-error'>No hay JavaScript!</div></noscript>
        </div>
        <div class="row">

          <h3>Como calcular el Codigo Verificador del RUC?</h3>
          <div class="row-fluid">
            <div class="span10">
              <p>
                En la <a href="http://www.set.gov.py/pset/hgxpp001?6,18,273,O,S,0,PAG;CONC;287;4;D;370;1;PAG;MNU;E;103;5;MNU;">
                página del SET</a> existen funciones para calcular el dígito verificador del RUC (GUIÓN) en PL/SQL, Visual Basic y C.
              </p>
              <p>Aqui publicamos los algoritmos en <strong>Scala, Groovy y Java.</strong></p>
              <h4>Scala</h4>
            <pre><code>def calcDV(ruc: String, basemax: Int = 11) = {
              val numeroRuc = ruc.map(it =&gt; if (it.isDigit) it.asDigit else it).mkString.reverse

              var k = 2
              var v_total = 0

              for (n &lt;- numeroRuc) {
              k = if (k &gt; basemax) 2 else k
              v_total += (n - 48) * k
              k += 1
              }

              val v_resto = v_total % 11
              val v_digit = if (v_resto &gt; 1) 11 - v_resto else 0

              v_digit.toString
              }</code></pre>
              <h4>Groovy</h4>
            <pre><code>int calcDigitoVerificador(String ruc, int basemax = 11) {
              String numeroRuc = ruc.chars.collect {
              it.isDigit() ? it : (int) it
              }.join()

              int k = 2
              int total = 0
              numeroRuc.reverse().chars.each {
              k = k &gt; basemax ? 2 : k
              int numero_aux = it - 48
              total += numero_aux * k++
              }

              int resto = total % 11
              resto &gt; 1 ? 11 - resto : 0
              }</code></pre>
              <h4>Java</h4>
            <pre><code>int Pa_Calcular_Dv_11_A(String p_numero, int p_basemax) {
              int v_total, v_resto, k, v_numero_aux, v_digit;
              String v_numero_al = "";

              for (int i = 0; i &lt; p_numero.length(); i++) {
              char c = p_numero.charAt(i);
              if(Character.isDigit(c)) {
              v_numero_al += c;
              } else {
              v_numero_al += (int) c;
              }
              }

              k = 2;
              v_total = 0;

              for(int i = v_numero_al.length() - 1; i &gt;= 0; i--) {
              k = k &gt; p_basemax ? 2 : k;
              v_numero_aux = v_numero_al.charAt(i) - 48;
              v_total += v_numero_aux * k++;
              }

              v_resto = v_total % 11;
              v_digit = v_resto &gt; 1 ? 11 - v_resto : 0;

              return v_digit;
              }</code></pre>
              <p><img src= /img/creativeCommons.png?b_jtgvQvHm07s_wSEAGDMg> Este código está bajo la licencia Creative Commons Attribution 3.0 License.</p>
              <div></div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

<!-- Footer
================================================== -->
<footer id="footer" class="footer">
  <div class="container">
    <!--
      <p class="pull-right"><a href="#">Back to top</a></p>
    -->
  </div>
</footer>

</body>
</html>